import store from "../store";
// 注意：原代码导入的 `promise` 未使用，可删除
// import { promise } from "../uni_modules/uv-ui-tools/libs/function/test";

export default async function showAgain() {
	try {
		// 1. 安全获取 globalData（处理 getApp() 可能失败的情况）
		const app = getApp({
			allowDefault: true
		})?.globalData || {};
		// 首次启动：直接返回，不执行修复逻辑
		if (app.isFirstLaunch) {
			console.log('是第一次启动返回');
			return;
		}
		console.log('重新启动，检查状态开始');
		const {
			user,
			isLocationRunning,
			ws
		} = store.state.msg;
		const repairTasks = [];
		// 2. 处理用户信息为空：跳转登录页并终止函数
		if (!user || Object.keys(user).length === 0) {
			repairTasks.push((store.dispatch('msg/getUserInfo')))
			// uni.reLaunch({ url: '/pages/login/login' });
			console.warn('没有用户信息，修复user');

		}

		// 3. 收集需要修复的异步操作（定位和WebSocket）

		repairTasks.push(store.dispatch('msg/getLocation')); // 存入Promise
		

		// 3.2 WebSocket断联：添加修复任务
    
		 const isWsConnected = ws && ws.readyState === 1;
		    if (!isWsConnected) {
		      console.warn('没有连接，重启WS');
		      repairTasks.push(store.dispatch('msg/reconnect'));
		    }
		if (repairTasks.length === 0) {
			console.log('无修复任务，不执行跳转');
			return; // 终止函数，后续的switchTab不会执行,避免在预览图片等被重置页面
		}
		// 4. 等待所有修复任务完成（若没有任务则直接执行）
		await Promise.all(repairTasks);

		// 5. 所有修复完成后跳转到主页面（当其它页调相册或相机时应用处于app隐藏状态，将原页面销毁无法回调结果）
		

	} catch (error) {
		// 捕获所有异步错误，避免函数中断
		console.error('showAgain 执行失败：', error);
		// 可选：错误降级处理（如提示用户重试）
		uni.showToast({
			title: '初始化失败，请重试',
			icon: 'none'
		});
	}
}